package novel.core.common.exception;

import lombok.Data;
import lombok.EqualsAndHashCode;
import novel.core.common.constant.ErrorCodeEnum;
/**
 * 自定义业务异常，用于处理用户请求时，业务错误时抛出
 *
 */
// 注解适用于继承层次结构中的类，
// 允许你指定是否在生成的方法中调用父类的 equals() 和 hashCode() 方法
@EqualsAndHashCode(callSuper = true)
@Data
public class BusinessException extends RuntimeException {

    private final ErrorCodeEnum errorCodeEnum;

    /**
     * 业务异常封装-添加状态码
     * @param errorCodeEnum
     */
    public BusinessException(ErrorCodeEnum errorCodeEnum) {
        // 不调用父类 Throwable的fillInStackTrace() 方法生成栈追踪信息，提高应用性能
        // 构造器之间的调用必须在第一行
        super(errorCodeEnum.getMessage(), null, false, false);
        this.errorCodeEnum = errorCodeEnum;
    }

}